File servers on a computer network today typically receive small, random requests. This is true whether the server is a low-cost Network Attached Server (NAS) box or a million-dollar high-end server. Small requests are enforced by the computer network protocols, which break larger client requests into smaller subrequests to more equitably share the network bandwidth. CIFS, the common network protocol for Windows machines, currently breaks client requests into 60 KByte subrequests while NFS, the common network protocol for Unix-derived machines, breaks client requests into 32 KByte subrequests. Thus, a request issued by a Windows client for 1 MByte of a file comes to the server as 17 subrequests for 60 KBytes followed by one subrequest for 4 KBytes. The subrequests arriving at the file server are random because they are generated from requests issued by multiple client processes for totally unrelated files. The server, therefore, receives a stream of short and random requests—the worst possible load for a server since each small random request tends to generate a mechanical access.
Servers today try to get around small network requests by having disk controllers read ahead data. Physical disks themselves even read ahead a track of data into local buffers. But today's disk and disk controller solutions fall far short of what is possible because:                1. They must read ahead physically on the disk since they have no knowledge of how the file is laid out on the disk. This physical read ahead may return irrelevant data instead of the next file data.        2. Disk controllers lack the intelligence and information to concurrently track the progress of hundreds of client processes requesting server files, so even when the physical read ahead does return relevant data, the buffers receiving the data are likely to be overwritten with new data before the current data is requested by a client.        
As an example of the state of the art today, a Dell PowerEdge 2850 server has a sophisticated storage system that includes five 15K Ultra 320 SCSI drives with track buffering and command queuing, configured into a RAID-5 array by an PERC4e/Di controller with 256 MBytes of buffering. The challenge in the art is to develop methods and systems to increase data throughput of server's like the Dell PowerEdge 2850.
The present invention addresses the difficult problem of boosting throughput of a computer file server and advances the art with a method using double-buffered paths and read aheads done at the file level.